﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.Corretagem.BusinessLogic.BusinessRuleValidation {

	/// <summary>
	/// Valida campos obrigatórios para a entidade <b>BusinessEntity.
	/// TipoAplicacaoCorretagem</b>
	/// </summary>
    public class CamposObrigatoriosTipoAplicacaoCorretagem : BaseBusinessRuleValidation<BusinessEntity.TipoAplicacaoCorretagem>, IBusinessRuleValidation
    {
		#region Atributos 
		private int _erroObjetoNulo = 109476; 
		#endregion Atributos

		#region Propriedades 
		/// <summary>
		/// Codigo de erro para objeto nulo
		/// </summary>
		public int ErroObjetoNulo{
			get
			{
				return _erroObjetoNulo;
			}
			set
			{
				_erroObjetoNulo = value;
			}
		} 
		#endregion Propriedades

		#region Construtores 

		public CamposObrigatoriosTipoAplicacaoCorretagem(){} 

		#endregion Construtores

		#region Métodos 
		
        /// <summary>
		/// Obtem os erros ocorridos no processo de validação
		/// </summary>		
        public List<Infra.Common.Validation.ValidationError> GetErrors()
        {
            return base.ErrorsList;
		}

		/// <summary>
		/// Valida os campos obrigatorios
		/// </summary>
		public void Validate()
        {
            if (base.EntityToValidate == null)
                base.AddValidationError(ErroObjetoNulo);

            try
            {
                SinacorValidation validation = new SinacorValidation();
                validation.Validate<BusinessEntity.TipoAplicacaoCorretagem>(base.EntityToValidate);

            }
            catch (ValidationException ex)
            {
                base.AddValidationError(ex.ValidationErrors);
            }			
		}
 
		#endregion Métodos 

	}

}